********************************************************************************


* Do-File for the Paper "Between left-authoritarians, sympathy for Russia and 
* political discontent: The correlates of voting for the Bündnis
* Sahra Wagenknecht (BSW)"; in: Politische Vierteljahresschrift 


* This do-file reproduces the empirical findings of the article. 


* Author: Philipp Hoffmann
* University of Bamberg 



* You can download the data sets here: https://search.gesis.org


* Download of GLES-Panel Wave 21, Version 1.0.0: https://search.gesis.org/research_data/ZA7727

* Download of GLES-Panel Wave 26, Version 1.0.0 (Pre-Release Version): https://search.gesis.org/research_data/ZA7732




* All possible mistakes are my faults


********************************************************************************










clear 







*******First step: Merging with wave 21 of the GLES-Panel (ZA6838_w21_sA_v6-0-0.dta)

use "ZA7732_sA_v1-0-0.dta"   /*Wave 26 of the GLES-Panel*/

merge 1:1 lfdn using ZA6838_w21_sA_v6-0-0    /*Wave 21 of the GLES-Panel*/
drop if _merge ==2

keep lfdn ostwest wei* kpx_2280 kpx_2290s kp21_2270 kp21_2320 kp26*


save "GLES_Panel_Merged"    /*name of the merged data set for all empirical analyses*/







********************************************************************************

***************************Start of Data Analysis
clear 

use "GLES_Panel_Merged"







**********Control item: stimme eher nicht zu (rather not agree)

keep if kp26_2880be == 2






*************Dependent Variables************************************************

** Intended voting BSW-Germany
fre kp26_190ba

clonevar BSW_GE = kp26_190ba
recode BSW_GE (-99/-97 = .) (1/322 801 = 0) (392 = 1)

lab var BSW_GE "Voting Intention Germany"
lab def BSW_GE 0 "Other party" 1 "BSW"
lab val BSW_GE BSW_GE
fre BSW_GE



** Actual vote choice BSW_European elections 2024
fre kp26_3032a

clonevar BSW_EU = kp26_3032a
recode BSW_EU (-99/-97 = .) (1/322 801 = 0) (392 = 1)

lab var BSW_EU "Party Voting European Elections"
lab def BSW_EU 0 "Other party" 1 "BSW"
lab val BSW_EU BSW_EU
fre BSW_EU



** Scalometer for Robustness Check (see Tables 4 & 5 in the supplementary material)
fre kp26_430m

clonevar BSW_Scalo = kp26_430m
recode BSW_Scalo (-99/-71 = .)

lab var BSW_Scalo "Scalometer BSW"
lab def BSW_Scalo 1 "-5 Doesn't like the party at all" 11 " +5 Like the party very much"
lab val BSW_Scalo BSW_Scalo
fre BSW_Scalo








***********Explanatory Variables************************************************

***************1. Attitudes

*****socio-economic and socio-cultural dimension


**socio-economic dimension 
fre kp26_1090

clonevar econ_att = kp26_1090
recode econ_att (-99 = .)

lab var econ_att "Socio-economic attitudes"
lab def econ_att 1 "Fewer taxes and fewer welfare state benefits" 7 "More welfare state benefits and taxes"
lab val econ_att econ_att
fre econ_att



**socio-cultural dimension
fre kp26_1130

clonevar cult_att = kp26_1130
recode cult_att (-99 = .)

lab var cult_att "Socio-cultural attitudes"
lab def cult_att 1 "Facilitate immigration of foreigners" 7 "Restrict the influx of foreigners"
lab val cult_att cult_att
fre cult_att






*****Attitudes Russia/invasion of Russia in Ukraine (as an index)

**Germany: more cooperation with Russia
fre kp26_2880bk

clonevar Russ_Coop = kp26_2880bk
recode Russ_Coop (-99 = .)
vreverse Russ_Coop, gen(Russ_Coop2)
drop Russ_Coop
rename Russ_Coop2 Russ_Coop

lab var Russ_Coop "Germany should cooperate more with Russia"
lab def Russ_Coop 1 "Do not agree at all" 2 "Rather disagree" 3 "Party/Partly" 4 "Tend to agree" 5 "Fully agree"
lab val Russ_Coop Russ_Coop
fre Russ_Coop



**Germany: resume importing Russian oil/coal/gas
fre kp26_2880cd

clonevar Russ_Gas = kp26_2880cd
recode Russ_Gas (-99/-93 = .)
vreverse Russ_Gas, gen(Russ_Gas2)
drop Russ_Gas
rename Russ_Gas2 Russ_Gas

lab var Russ_Gas "Germany should resume importing Russian oil/coal/gas"
lab def Russ_Gas 1 "Do not agree at all" 2 "Rather disagree" 3 "Party/Partly" 4 "Tend to agree" 5 "Fully agree"
lab val Russ_Gas Russ_Gas
fre Russ_Gas



**Germany: less support of Ukraine
fre kp26_2880cl

clonevar Ukr_Supp = kp26_2880cl
recode Ukr_Supp (-99/-93 = .)

lab var Ukr_Supp "Germany should show more restraint in supporting Ukraine"
lab def Ukr_Supp 1 "Do not agree at all" 2 "Rather disagree" 3 "Party/Partly" 4 "Tend to agree" 5 "Fully agree"
lab val Ukr_Supp Ukr_Supp
fre Ukr_Supp



******Now: Creating index
alpha Russ_Coop Russ_Gas Ukr_Supp
*Cronbachs alpha .8



******Now: Creating mean index
egen Russ_Symp = rowmean(Russ_Coop Russ_Gas Ukr_Supp)

lab var Russ_Symp "Sympathy for Russia"
lab def Russ_Symp 1 "No sympathy for Russia" 5 "Strong sympathy for Russia"
lab val Russ_Symp Russ_Symp
fre Russ_Symp













*****Rating of Wagenknecht --> for robustness checks (see Table 5 in the supplementary material)

**Rating Wagenknecht 
fre kp26_650y

clonevar Wagenknecht = kp26_650y 
recode Wagenknecht (-99/-71 = .)

lab var Wagenknecht "Rating Wagenknecht"
lab def Wagenknecht 1 "-5 Doesn't like the person at all" 11 " +5 Like the person very much"
lab val Wagenknecht Wagenknecht
fre Wagenknecht












***************2. Political Dissatisfaction

**Dissatisfaction with democracy 
fre kp26_020

clonevar dem_diss = kp26_020
recode dem_diss (-99 = .)

lab var dem_diss "Dissatisfaction: Democracy"
lab def dem_diss 1 "Very satisfied" 2 "Satisfied" 3 "Partly/Partly" 4 "Dissatisfied" 5 "Very dissatisfied"
lab val dem_diss dem_diss
fre dem_diss



**Dissatisfaction with federal government 
fre kp26_730

clonevar gov_diss = kp26_730
recode gov_diss (-99/-93 = .)
vreverse gov_diss, gen(gov_diss2)
drop gov_diss
rename gov_diss2 gov_diss

lab var gov_diss "Dissatisfaction: Federal Government"
lab def gov_diss 1 "+5 Very satisfied" 11 "-5 Very dissatisfied"
lab val gov_diss gov_diss
fre gov_diss



**Distrust institutions
fre kp26_160a kp26_160b kp26_160c kp26_160j

*Federal Parliament
clonevar Miss_Parl = kp26_160a
recode Miss_Parl (-99/.93 = .)
vreverse Miss_Parl, gen(Miss_Parl2)
drop Miss_Parl
rename Miss_Parl2 Miss_Parl
lab var Miss_Parl "Distrust: Federal Parliament"
fre Miss_Parl



*Federal Court
clonevar Miss_Court = kp26_160b
recode Miss_Court (-99/.93 = .)
vreverse Miss_Court, gen(Miss_Court2)
drop Miss_Court
rename Miss_Court2 Miss_Court
lab var Miss_Court "Distrust: Federal Constitutional Court"
fre Miss_Court



*Federal Government
clonevar Miss_Gov = kp26_160c 
recode Miss_Gov (-99/.93 = .)
vreverse Miss_Gov, gen(Miss_Gov2)
drop Miss_Gov
rename Miss_Gov2 Miss_Gov
lab var Miss_Gov "Distrust: Federal Government"
fre Miss_Gov



*Federal Armed Forces
clonevar Miss_Milit = kp26_160j
recode Miss_Milit (-99/.93 = .)
vreverse Miss_Milit, gen(Miss_Milit2)
drop Miss_Milit
rename Miss_Milit2 Miss_Milit
lab var Miss_Milit "Distrust: Federal Armed Forces"
fre Miss_Milit



******Now: Creating index
alpha Miss_Parl Miss_Court Miss_Gov Miss_Milit
* Cronbachs Alpha: .87      


******Now: Creating mean index
egen Pol_Miss = rowmean(Miss_Parl Miss_Court Miss_Gov Miss_Milit)

lab var Pol_Miss "Distrust: Political Institutions"
lab def Pol_Miss 1 "Completely trust" 5 "Completely distrust"
lab val Pol_Miss Pol_Miss
fre Pol_Miss








**Populist Attitudes 
fre kp26_3103a kp26_3103b kp26_3103c kp26_3103d kp26_3103e kp26_3103f kp26_3103g kp26_3103h

clonevar Pop1 = kp26_3103a
recode Pop1 (-99/-93 = .)
lab var Pop1 "Politicians: talk too much and act too little"
fre Pop1

clonevar Pop2 = kp26_3103b
recode Pop2 (-99/-93 = .)
lab var Pop2 "Ordinary citizens: united by a good and honest character" 
fre Pop2

clonevar Pop3 = kp26_3103c
recode Pop3 (-99/-93 = .)
lab var Pop3 "Ordinary citizens: pulling together"
fre Pop3

clonevar Pop4 = kp26_3103d
recode Pop4 (-99/-93 = .)
lab var Pop4 "Ordinary citizens: share the same values and interests"
fre Pop4

clonevar Pop5 = kp26_3103e
recode Pop5 (-99/-93 = .)
lab var Pop5 "Great differences between the people and the elite"
fre Pop5 

clonevar Pop6 = kp26_3103f
recode Pop6 (-99/-93 = .)
lab var Pop6 "The people should make the most important political decisions"
fre Pop6 

clonevar Pop7 = kp26_3103g
recode Pop7 (-99/-93 = .)
lab var Pop7 "Politicians: must follow the will of the people"
fre Pop7

clonevar Pop8 = kp26_3103g
recode Pop8 (-99/-93 = .)
lab var Pop8 "People should have the final word on important political issues using a referendum"
fre Pop8



******Now: Creating index
alpha Pop1 Pop2 Pop3 Pop4 Pop5 Pop6 Pop7 Pop8
*Cronbachs alpha: .85


*Now: creating mean index
egen popu_att = rowmean(Pop1 Pop2 Pop3 Pop4 Pop5 Pop6 Pop7 Pop8)

lab var popu_att "Populist attitudes"
lab def popu_att 1 "No populist attitudes" 5 "Very strong populist attitudes"
lab val popu_att popu_att
fre popu_att
















************************************Control Variables***************************


** Region: East/West Germany
fre ostwest

clonevar east = ostwest 
vreverse east, gen(east2)
drop east
rename east2 east

lab var east "East Germany"
lab def east 0 "West Germany" 1 "East Germany"
lab val east east
fre east



** Gender (Ref: Male) 
fre kpx_2280

clonevar female = kpx_2280 
recode female (1 = 0) (2 = 1)

lab var female "Female"
lab def female 0 "Male" 1 "Female"
lab val female female
fre female



** Age (Ref.: 18-29 years)
fre kpx_2290s
destring kpx_2290s, replace ignore ("und frueher")

gen age = 2021 - kpx_2290s

lab var age "Age"
fre age

recode age (18/29 = 1) (30/41 = 2) (42/53 = 3) (54/66 = 4)
lab def age 1 "18-29" 2 "30-41" 3 "42-53" 4 "54-66"
lab val age age
fre age



** Education (Ref.: High education)
fre kp21_2320

clonevar education = kp21_2320 
recode education (-95/-93 = .) (1 2 = 1) (3 = 2) (4 5 = 3)

lab var education "Education"
lab def education 1 "Low education" 2 "Middle education" 3 "High Education"
lab val education education
fre education



**Political Interest Germany
fre kp26_010

clonevar pol_int = kp26_010
recode pol_int (-99 = .)
vreverse pol_int, gen(pol_int2)
drop pol_int
rename pol_int2 pol_int 

lab var pol_int "Political interest"
lab def pol_int 1 "Not at all" 2 "Less strong" 3 "Average" 4 "Strong" 5 "Very strong"
lab val pol_int pol_int
fre pol_int 



**Left-Right Self-assessment
fre kp26_1500

clonevar left_right = kp26_1500
recode left_right (-99/-98 =.)

lab var left_right "Left-Right self-placement"
lab def left_right 1 "Left" 11 "Right"
lab val left_right left_right
fre left_right



**Sense of fair share
fre kp21_2270

clonevar justice_ego = kp21_2270
recode justice_ego (-99/-93 = .)

lab var justice_ego "Sense of unfairness"
lab def justice_ego 1 "Lot more" 2 "Somewhat more" 3 "Fair share" 4 "Somewhat less" 5 "Much less"
lab val justice_ego justice_ego
fre justice_ego



** Position EU
fre kp26_1250

clonevar EU_att = kp26_1250
recode EU_att (-99/-93 = .)

lab var EU_att "European Integration has gone too far"
lab def EU_att 1 "Advancing European Integration" 7 "European Integration has gone too far"
lab val EU_att EU_att 
fre EU_att















********************************************************************************

*							Empirical	Analyses 

********************************************************************************

** Constant number of observations 
drop if missing(BSW_GE, BSW_EU, BSW_Scalo, econ_att, cult_att, Wagenknecht, Russ_Symp, dem_diss, gov_diss, Pol_Miss, popu_att, east, female, age, education, pol_int, left_right, justice_ego, EU_att, wei21_mz)







******************Descriptive Analyses******************************************



** Cross-tabulation of actual and intended vote choice (see Table 1 in the supplementary material)
asdoc tab BSW_GE BSW_EU, cell





** Correlation matrix (see Figure 1 in the supplementary material)
correlate econ_att cult_att Russ_Symp dem_diss gov_diss Pol_Miss popu_att pol_int left_right justice_ego EU_att BSW_Scalo Wagenknecht
pwcorr econ_att cult_att Russ_Symp dem_diss gov_diss Pol_Miss popu_att pol_int left_right justice_ego EU_att BSW_Scalo Wagenknecht

corrtable econ_att cult_att Russ_Symp dem_diss gov_diss Pol_Miss popu_att pol_int left_right justice_ego EU_att BSW_Scalo Wagenknecht, half flag1(r(rho) < 0.3) howflag1(plotregion(color(blue * 0.1))) flag2(r(rho) > 0.3) howflag2(plotregion(color(blue * 0.3))) flag3(r(rho) > 0.7) howflag3(plotregion(color(blue * 0.5))) flag4(r(rho) < 0) howflag4(plotregion(color(red * 0.1))) flag5(r(rho) < -0.3) howflag5(plotregion(color(red * 0.3))) 













************************Regression Analyses*************************************


****************Now: Intended vote choice for BSW in Germany


**1. Model: Political Dimensions
logit BSW_GE c.econ_att c.cult_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [pw = wei21_mz]
est store BSW_GE1


**2. Model: Attitudes Russia/War Ukraine
logit BSW_GE c.Russ_Symp ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [pw = wei21_mz]
est store BSW_GE2


**3. Model: Political Dissatisfaction
logit BSW_GE c.dem_diss c.gov_diss c.Pol_Miss c.popu_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [pw = wei21_mz]
est store BSW_GE3


**4. Full Model
logit BSW_GE c.econ_att c.cult_att c.Russ_Symp c.dem_diss c.gov_diss c.Pol_Miss c.popu_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [pw = wei21_mz]
est store BSW_GE4







*************Table 2 of the supplementary material

esttab BSW_GE1 BSW_GE2 BSW_GE3 BSW_GE4 using Regression1.rtf, replace /// 
	title("Table 2: Determinants of BSW intended vote choice in Germany") ///
    mtitle("M1" "M2" "M3" "Full Model") ///
	nonum nogaps obslast par label eqlabel("") ///
    b(2) se(2) nonotes align(l)  ///
	stats(N r2_p, label("Observations" "Pseudo-R²")) ///
	order(econ_att cult_att Russ_Symp dem_diss gov_diss Pol_Miss popu_att *.east *.female *.age *.education pol_int left_right justice_ego EU_att) ///
  addnotes("Notes: Logistic Regressions;" ///
	  "Standard errors in parentheses; level of significance: *:p<.05, **:p<.01, ***:p<.001;" ///
	  "Source: own results; Data Source: GLES-Panel Wave 26") ///
    varwidth(33) modelwidth(7)





	
	


****************Now: Actual vote choice for BSW in the 2024 European Elections


**1. Model: Political Dimensions
logit BSW_EU c.econ_att c.cult_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [pw = wei21_mz]
est store BSW_EU1


**2. Model: Attitudes Russia/war Ukraine
logit BSW_EU c.Russ_Symp ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [pw = wei21_mz]
est store BSW_EU2


**3. Model: Political Dissatisfaction
logit BSW_EU c.dem_diss c.gov_diss c.Pol_Miss c.popu_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [pw = wei21_mz]
est store BSW_EU3


**4. Full Model
logit BSW_EU c.econ_att c.cult_att c.Russ_Symp c.dem_diss c.gov_diss c.Pol_Miss c.popu_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [pw = wei21_mz]
est store BSW_EU4






*************Table 3 of the supplementary material

esttab BSW_EU1 BSW_EU2 BSW_EU3 BSW_EU4 using Regression2.rtf, replace /// 
	title("Table 3: Determinants of BSW-Voting in European Elections 2024") ///
    mtitle("M1" "M2" "M3" "Full Model") ///
	nonum nogaps obslast par label eqlabel("") ///
    b(2) se(2) nonotes align(l)  ///
	stats(N r2_p, label("Observations" "Pseudo-R²")) ///
		order(econ_att cult_att Russ_Symp dem_diss gov_diss Pol_Miss popu_att *.east *.female *.age *.education pol_int left_right justice_ego EU_att) ///
  addnotes("Notes: Logistic Regressions;" ///
	  "Standard errors in parentheses; level of significance: *:p<.05, **:p<.01, ***:p<.001;" ///
	  "Source: own results; Data Source: GLES-Panel Wave 26") ///
    varwidth(33) modelwidth(7)






	
	
	
	

	
*************Figure 1: Coefficiency Plot for Full Models of Tables 2 and 3	

coefplot (BSW_GE4, pstyle(p3) offset(.15) msymbol(o) msize(medlarge)) (BSW_EU4, pstyle(p4) offset(-0.15) msymbol(s) msize(medlarge)) ///
		, drop(*.east *.female *.age *.education pol_int left_right justice_ego EU_att _cons) ///
		  coeflabels(, labsize(vsmall)) ///
		  xline(0) grid(within) graphregion(color(white)) /// 
		  headings(econ_att = "{it:Attitudes}" ///
		  dem_diss = "{it:Political dissatisfaction}") /// 
		  mlabel(cond(@pval<.001, "***", ///
          cond(@pval<.01, "**",   ///
          cond(@pval<.05, "*", "")))) ///
		  mlabposition(3) mlabsize(medsmall) ///
		  legend(order(2 "Intended Voting: Germany" 4 "Actual Voting: European Elections 2024") size(vsmall)) /// 
		  xscale(range(-.8 .8)) xlabel(-.8 (.2) .8) ///
		  note("*** p<.001; ** p<.01; * p<.05")

	
	
	

	
	
	

	
************************Marginsplots of significant variables (see Figures 2, 3 and 4)


**** Starting with intended vote choice in Germany

quietly logit BSW_GE c.econ_att c.cult_att c.Russ_Symp c.dem_diss c.gov_diss c.Pol_Miss c.popu_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [pw = wei21_mz]	
	

margins, at(econ_att= (1(1)7)) vsquish
marginsplot, /// 
title("(1) Position issue: Welfare state benefits", size(vsmall)) /// 
ytitle("") ///
xtitle("Intended Voting: Germany", size(vsmall)) /// 
plot1opts(lpattern("--") msymbol(none) lwidth(thick)) ///
ci1opts(recast(rline) lpattern("--")) ///
ylab(0(.05).3, angle(0) nogrid labsize(vsmall)) ///
xlab(1 `" "Fewer welfare" "state benefits" "' 7 `" "More welfare" "state benefits" "', labsize(vsmall) nogrid) ///
graphregion(color(white)) name(Model_DE1, replace)


margins, at(cult_att= (1(1)7)) vsquish
marginsplot, /// 
title("(2) Position issue: Immigration", size(vsmall)) /// 
ytitle("") ///
xtitle("Intended Voting: Germany", size(vsmall)) /// 
plot1opts(lpattern("--") msymbol(none) lwidth(thick)) ///
ci1opts(recast(rline) lpattern("--")) ///
ylab(0(.05).3, angle(0) nogrid labsize(vsmall)) ///
xlab(1 `" "More" "immigration" "' 7 `" "Fewer" "immigration" "', labsize(vsmall) nogrid) ///
graphregion(color(white)) name(Model_DE2, replace)


margins, at(Russ_Symp= (1(1)5)) vsquish
marginsplot, /// 
title("(3) Sympathy for Russia", size(vsmall)) /// 
ytitle("") ///
xtitle("Intended Voting: Germany", size(vsmall)) /// 
plot1opts(lpattern("--") msymbol(none) lwidth(thick)) ///
ci1opts(recast(rline) lpattern("--")) ///
ylab(0(.05).3, angle(0) nogrid labsize(vsmall)) ///
xlab(1 `" "No sympathy" "for Russia" "' 5 `" "Strong sympathy" "for Russia" "', labsize(vsmall) nogrid) ///
graphregion(color(white)) name(Model_DE3, replace)


margins, at(gov_diss= (1(1)11)) vsquish
marginsplot, /// 
title("(4) Dissatisfaction: Federal government", size(vsmall)) /// 
ytitle("") ///
xtitle("Intended Voting: Germany", size(vsmall)) /// 
plot1opts(lpattern("--") msymbol(none) lwidth(thick)) ///
ci1opts(recast(rline) lpattern("--")) ///
ylab(0(.05).3, angle(0) nogrid labsize(vsmall)) ///
xlab(1 `" "Very" "satisfied" "' 11 `" "Very" "dissatisfied" "', labsize(vsmall) nogrid) ///
graphregion(color(white)) name(Model_DE4, replace)


margins, at(popu_att= (1(1)5)) vsquish
marginsplot, /// 
title("(5) Populist attitudes", size(vsmall)) /// 
ytitle("") ///
xtitle("Intended Voting: Germany", size(vsmall)) /// 
plot1opts(lpattern("--") msymbol(none) lwidth(thick)) ///
ci1opts(recast(rline) lpattern("--")) ///
ylab(0(.05).3, angle(0) nogrid labsize(vsmall)) ///
xlab(1 `" "No populist" "attitudes" "' 5 `" "Strong populist" "attitudes" "', labsize(vsmall) nogrid) ///
graphregion(color(white)) name(Model_DE5, replace)





	
	

	
****Now: Actual vote choice in the 2024 European elections	
	
quietly logit BSW_EU c.econ_att c.cult_att c.Russ_Symp c.dem_diss c.gov_diss c.Pol_Miss c.popu_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [pw = wei21_mz]	


margins, at(econ_att= (1(1)7)) vsquish
marginsplot, /// 
title("(1) Position issue: Welfare state benefits", size(vsmall)) /// 
ytitle("") ///
xtitle("Actual Voting: European Elections 2024", size(vsmall)) /// 
plot1opts(lpattern(line) msymbol(none) lwidth(thick)) ///
ci1opts(recast(rline) lpattern(line)) ///
ylab(0(.05).3, angle(0) nogrid labsize(vsmall)) ///
xlab(1 `" "Fewer welfare" "state benefits" "' 7 `" "More welfare" "state benefits" "', labsize(vsmall) nogrid) ///
graphregion(color(white)) name(Model_EU1, replace)


margins, at(cult_att= (1(1)7)) vsquish
marginsplot, /// 
title("(2) Position issue: Immigration", size(vsmall)) /// 
ytitle("") ///
xtitle("Actual Voting: European Elections 2024", size(vsmall)) /// 
plot1opts(lpattern(line) msymbol(none) lwidth(thick)) ///
ci1opts(recast(rline) lpattern(line)) ///
ylab(0(.05).3, angle(0) nogrid labsize(vsmall)) ///
xlab(1 `" "More" "immigration" "' 7 `" "Fewer" "immigration" "', labsize(vsmall) nogrid) ///
graphregion(color(white)) name(Model_EU2, replace)


margins, at(Russ_Symp= (1(1)5)) vsquish
marginsplot, /// 
title("(3) Sympathy for Russia", size(vsmall)) /// 
ytitle("") ///
xtitle("Actual Voting: European Elections 2024", size(vsmall)) /// 
plot1opts(lpattern(line) msymbol(none) lwidth(thick)) ///
ci1opts(recast(rline) lpattern(line)) ///
ylab(0(.05).3, angle(0) nogrid labsize(vsmall)) ///
xlab(1 `" "No sympathy" "for Russia" "' 5 `" "Strong sympathy" "for Russia" "', labsize(vsmall) nogrid) ///
graphregion(color(white)) name(Model_EU3, replace)


margins, at(gov_diss= (1(1)11)) vsquish
marginsplot, /// 
title("(4) Dissatisfaction: Federal government", size(vsmall)) /// 
ytitle("") ///
xtitle("Actual Voting: European Elections 2024", size(vsmall)) /// 
plot1opts(lpattern(line) msymbol(none) lwidth(thick)) ///
ci1opts(recast(rline) lpattern(line)) ///
ylab(0(.05).3, angle(0) nogrid labsize(vsmall)) ///
xlab(1 `" "Very" "satisfied" "' 11 `" "Very" "dissatisfied" "', labsize(vsmall) nogrid) ///
graphregion(color(white)) name(Model_EU4, replace)


margins, at(popu_att= (1(1)5)) vsquish
marginsplot, /// 
title("(5) Populist attitudes", size(vsmall)) /// 
ytitle("") ///
xtitle("Actual Voting: European Elections 2024", size(vsmall)) /// 
plot1opts(lpattern(line) msymbol(none) lwidth(thick)) ///
ci1opts(recast(rline) lpattern(line)) ///
ylab(0(.05).3, angle(0) nogrid labsize(vsmall)) ///
xlab(1 `" "No populist" "attitudes" "' 5 `" "Strong populist" "attitudes" "', labsize(vsmall) nogrid) ///
graphregion(color(white)) name(Model_EU5, replace)
	

	
	
	

	
	
**Now: Combining the Average Marginal effects/predicted probabilities
	
*Figure 2: Political Dimensions
graph combine Model_DE1 Model_EU1 Model_DE2 Model_EU2, ///
graphregion(color(white)) rows(2) cols(2) ysize(5.7) title("Position Issues", size(vsmall))



*Figure 3: Sympathy for Russia
graph combine Model_DE3 Model_EU3, ///
graphregion(color(white)) rows(3) cols(2) ysize(5.7) title("Sympathy Russia", size(vsmall))



*Figure 4: Political Dissatisfaction
graph combine Model_DE4 Model_EU4 Model_DE5 Model_EU5, ///
graphregion(color(white)) rows(2) cols(2) ysize(5.7) title("Political Dissatisfaction", size(vsmall))

















********************************************************************************

* 						Robustness Checks 

********************************************************************************





*******First: Rating of BSW (see Table 4 in the supplementary material)


**1. Model: Political Dimensions
reg BSW_Scalo c.econ_att c.cult_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [aw = wei21_mz]
est store BSW_Scalo1


**2. Model: Sympathy Russia
reg BSW_Scalo c.Russ_Symp c.pol_int ib0.east ib0.female ib1.age ib3.education c.left_right c.justice_ego c.EU_att [aw = wei21_mz]
est store BSW_Scalo2


**3. Model: Political Dissatisfaction
reg BSW_Scalo c.dem_diss c.gov_diss c.Pol_Miss c.popu_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [aw = wei21_mz]
est store BSW_Scalo3


**4. Full Model
reg BSW_Scalo c.econ_att c.cult_att c.Russ_Symp c.dem_diss c.gov_diss c.Pol_Miss c.popu_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [aw = wei21_mz]
est store BSW_Scalo4





**Table 4 in the supplementary material

esttab BSW_Scalo1 BSW_Scalo2 BSW_Scalo3 BSW_Scalo4 using Regression3.rtf, replace /// 
	title("Table 4: Determinants of rating BSW (robustness check)") ///
    mtitle("M1" "M2" "M3" "Full Model") ///
	nonum nogaps obslast par label eqlabel("") ///
    b(2) se(2) nonotes align(l)  ///
	stats(N r2_a, label("Observations" "Adj. R²")) ///
		order(econ_att cult_att Russ_Symp dem_diss gov_diss Pol_Miss popu_att *.east *.female *.age *.education pol_int left_right justice_ego EU_att) ///
  addnotes("Notes: Linear Regressions;" ///
	  "Standard errors in parentheses; level of significance: *:p<.05, **:p<.01, ***:p<.001;" ///
	  "Source: own results; Data Source: GLES-Panel Wave 26") ///
    varwidth(33) modelwidth(7)











**********Second: Including Rating Wagenknecht (see Table 5 in the supplementary material)

**Intended vote choice Germany
logit BSW_GE c.Wagenknecht c.econ_att c.cult_att c.Russ_Symp c.dem_diss c.gov_diss c.Pol_Miss c.popu_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [pw = wei21_mz]
est store Wagenknecht1


**Actual vote choice 2024 European elections
logit BSW_EU c.Wagenknecht c.econ_att c.cult_att c.Russ_Symp c.dem_diss c.gov_diss c.Pol_Miss c.popu_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [pw = wei21_mz]
est store Wagenknecht2


**Rating of BSW
reg BSW_Scalo c.Wagenknecht c.econ_att c.cult_att c.Russ_Symp c.dem_diss c.gov_diss c.Pol_Miss c.popu_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [aw = wei21_mz]
est store Wagenknecht3



**Checking for multicollinearity of the last regression between Rating BSW and Rating Wagenknecht --> no strong multicollinearity
vif 






**Table 5 in the supplementary material

esttab Wagenknecht1 Wagenknecht2 Wagenknecht3 using Regression4.rtf, replace /// 
	title("Table 5: Inclusion of rating Wagenknecht on BSW-Voting and BSW-Rating (robustness check)") ///
    mtitle("Intended Voting: Germany" "Actual Voting: European Elections 2024" "Rating BSW (OLS)") ///
	nonum nogaps obslast par label eqlabel("") ///
    b(2) se(2) nonotes align(l)  ///
	stats(N r2_p r2, label("Observations" "(Pseudo-)R²")) ///
  addnotes("Notes: Logistic and Linear Regressions;" ///
	  "Standard errors in parentheses; level of significance: *:p<.05, **:p<.01, ***:p<.001;" ///
	  "Source: own results; Data Source: GLES-Panel Wave 26") ///
    varwidth(35) modelwidth(8)

	
	

	

	
	
	
**Now: Average marginal effects for influence rating Wagenknecht (see Figure 2 in the supplementary material)


* 1. Intended vote choice Germany	
quietly logit BSW_GE c.Wagenknecht c.econ_att c.cult_att c.Russ_Symp c.dem_diss c.gov_diss c.Pol_Miss c.popu_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [pw = wei21_mz]	

margins, at(Wagenknecht= (1(1)11)) vsquish
marginsplot, /// 
title("Rating Wagenknecht", size(vsmall)) /// 
ytitle("") ///
xtitle("Intended Voting: Germany", size(vsmall)) /// 
plot1opts(lpattern("--") msymbol(none) lwidth(thick)) ///
ci1opts(recast(rline) lpattern("--")) ///
ylab(0(.1).7, angle(0) nogrid labsize(vsmall)) ///
xlab(1 `" "Not liking" "her" "' 11 `" "Liking her" "very much" "', labsize(vsmall) nogrid) ///
graphregion(color(white)) name(Model_Wagenknecht1, replace)



* 2. Reported voting European Elections 2024
quietly logit BSW_EU c.Wagenknecht c.econ_att c.cult_att c.Russ_Symp c.dem_diss c.gov_diss c.Pol_Miss c.popu_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [pw = wei21_mz]

margins, at(Wagenknecht= (1(1)11)) vsquish
marginsplot, /// 
title("Rating Wagenknecht", size(vsmall)) /// 
ytitle("") ///
xtitle("Actual Voting: Europe", size(vsmall)) /// 
plot1opts(lpattern(line) msymbol(none) lwidth(thick)) ///
ci1opts(recast(rline) lpattern(line)) ///
ylab(0(.1).7, angle(0) nogrid labsize(vsmall)) ///
xlab(1 `" "Not liking" "her" "' 11 `" "Liking her" "very much" "', labsize(vsmall) nogrid) ///
graphregion(color(white)) name(Model_Wagenknecht2, replace)



* 3. BSW Scalometer
quietly reg BSW_Scalo c.Wagenknecht c.econ_att c.cult_att c.Russ_Symp c.dem_diss c.gov_diss c.Pol_Miss c.popu_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [aw = wei21_mz]

margins, at(Wagenknecht= (1(1)11)) vsquish
marginsplot, /// 
title("Rating Wagenknecht", size(vsmall)) /// 
ytitle("") ///
xtitle("Rating: BSW", size(vsmall)) /// 
plot1opts(lpattern("_") msymbol(none) lwidth(thick)) ///
ci1opts(recast(rline) lpattern("_")) ///
ylab(0(1)9, angle(0) nogrid labsize(vsmall)) ///
xlab(1 `" "Not liking" "her" "' 11 `" "Liking her" "very much" "', labsize(vsmall) nogrid) ///
graphregion(color(white)) name(Model_Wagenknecht3, replace)





**Now: Figure 2 of the supplementary material

graph combine Model_Wagenknecht1 Model_Wagenknecht2 Model_Wagenknecht3, ///
graphregion(color(white)) rows(3) cols(1) ysize(5.7) title("Rating Wagenknecht", size(vsmall))









**********Third: Rating Wagenknecht as dependent variable (see Table 6 in the supplementary material)

reg Wagenknecht c.econ_att c.cult_att c.Russ_Symp c.dem_diss c.gov_diss c.Pol_Miss c.popu_att ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [aw = wei21_mz]
est store Wagenknecht4



**Table 6 in the supplementary material
esttab Wagenknecht4 using Regression5.rtf, replace /// 
	title("Table 6: Rating Wagenknecht as dependent variable (robustness check)") ///
	nonum nogaps obslast par label eqlabel("") ///
    b(2) se(2) nonotes align(l)  ///
	stats(N r2, label("Observations" "R²")) ///
  addnotes("Notes: Linear Regression;" ///
	  "Standard errors in parentheses; level of significance: *:p<.05, **:p<.01, ***:p<.001;" ///
	  "Source: own results; Data Source: GLES-Panel Wave 26") ///
    varwidth(40) modelwidth(15)







	
	
	
	
	
	
	
***********Last: Single factors of political discontent (see Table 7 of supplementary material)

*Germany
logit BSW_GE c.econ_att c.cult_att c.Russ_Symp c.Pol_Miss ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [pw = wei21_mz]	
est store BSW_Single1	
	
	
*European Elections 2024
logit BSW_EU c.econ_att c.cult_att c.Russ_Symp c.Pol_Miss ib0.east ib0.female ib1.age ib3.education c.pol_int c.left_right c.justice_ego c.EU_att [pw = wei21_mz]	
est store BSW_Single2



	
** Table 7 in the supplementary material	
esttab BSW_Single1 BSW_Single2 using Regression6.rtf, replace /// 
	title("Table 7: Influence of political distrust without dissatisfaction democracy, dissatisfaction federal government and populist attitudes (robustness check)") ///
    mtitle("Intended Voting: Germany" "Actual voting: European Elections 2024") ///
	nonum nogaps obslast par label eqlabel("") ///
    b(2) se(2) nonotes align(l)  ///
	stats(N r2_p, label("Observations" "Pseudo-R²")) ///
	order(econ_att cult_att Russ_Symp Pol_Miss *.east *.female *.age *.education pol_int left_right justice_ego EU_att) ///
  addnotes("Notes: Logistic Regressions;" ///
	  "Standard errors in parentheses; level of significance: *:p<.05, **:p<.01, ***:p<.001;" ///
	  "Source: own results; Data Source: GLES-Panel Wave 26") ///
    varwidth(45) modelwidth(12)	
	
	
	
	
	
	




